package paq_negocio;

import com.sun.rowset.CachedRowSetImpl;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;
import paq_clase_interfaz.interfaz_usuario;
import paq_entidades.enti_tipo_usuario;
import paq_entidades.enti_usuario;
import paq_entidades.enti_variables;
import paq_sentencias.Ejecutarsql;

@Stateless
public class neg_usuario implements interfaz_usuario {

    enti_variables v = new enti_variables();
    Ejecutarsql ejec = new Ejecutarsql();
    enti_usuario entidad = new enti_usuario();
    enti_tipo_usuario tipoU = new enti_tipo_usuario();

    @Override
    public void insertar(String nombre, String apellido, String nick, String tu_codigo, String password, String correo, String extra) {
        entidad.setPe_nombres(nombre);
        entidad.setPe_apellidos(apellido);
        entidad.setU_nick(nick);
        tipoU.setTu_codigo(tu_codigo);
        entidad.setU_password(password);
        entidad.setPe_email(correo);
        entidad.setU_extra(extra);
        String sql = "insert into Usuario (u_nombre,u_apellido,u_nick,tu_codigo,u_password,u_correo,u_extraP,u_estado) values('" + entidad.getPe_nombres() + "','" + entidad.getPe_apellidos() + "','" + entidad.getU_nick() + "','" + tipoU.getTu_codigo() + "','" + entidad.getU_password() + "','" + entidad.getPe_email() + "','" + entidad.getU_extra() + "','Activo')";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void eliminar(String nick) {
        entidad.setU_nick(nick);
        String sql = "delete from  Usuario where u_nick='" + entidad.getU_nick() + "'";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void actualizar(String nombre, String apellido, String nick, String tu_codigo, String password, String correo, String extra) {
        entidad.setPe_nombres(nombre);
        entidad.setPe_apellidos(apellido);
        entidad.setU_nick(nick);
        tipoU.setTu_codigo(tu_codigo);
        entidad.setU_password(password);
        entidad.setPe_email(correo);
        entidad.setU_extra(extra);
        String sql = "update Usuario set tu_codigo='" + tipoU.getTu_codigo() + "',u_nick='" + entidad.getU_nick() + "',u_nombre='" + entidad.getPe_nombres() + "',u_apellido='" + entidad.getPe_apellidos() + "',u_password='" + entidad.getU_password() + "',u_correo='" + entidad.getPe_email() + "',u_extraP='" + entidad.getU_extra() + "' where u_nick='" + entidad.getU_nick() + "'  ";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl getLista() {
        try {
v.crs2 = (CachedRowSetImpl) ejec.rellena2("select u.U_NOMBRE,u.U_NICK,tipo.TU_NOMBRE,tipo.TU_CODIGO,u.U_PASSWORD,u.U_CORREO,u.U_APELLIDO,u.U_EXTRAP from USUARIO u,TIPO_USUARIO tipo where tipo.TU_NOMBRE!='ALUMNO' AND tipo.TU_NOMBRE!='PROFESOR' AND u.TU_CODIGO=tipo.TU_CODIGO order by tipo.TU_NOMBRE asc");        } catch (Exception ex) {
            System.out.println("Error al recuperar lista de datos");
        }
        return v.crs2;
    }

    @Override
    public CachedRowSetImpl getListacomboinformacion() {
        try {
            v.crs = (CachedRowSetImpl) ejec.rellena2("select * from Usuario");
        } catch (Exception ex) {
            // Logger.getLogger(neg_usuario.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error al recuperar lista de datos");
        }
        return v.crs;
    }

    @Override
    public String getmensajei() {
        String sdr = "";
        sdr = v.msm;
        return sdr;
    }

    @Override
    public CachedRowSetImpl getLista_por_promocion(String promocion) {
        try {
            v.crs1 = (CachedRowSetImpl) ejec.rellena2("select us.U_NOMBRE,us.U_APELLIDO,tipo.TU_NOMBRE,us.U_CORREO,us.U_NICK from Usuario us,TIPO_USUARIO tipo where us.U_extrap='" + promocion + "' and us.TU_CODIGO =tipo.TU_CODIGO");
        } catch (Exception ex) {
            System.out.println("Error al recuperar lista de datos");
        }
        return v.crs1;
    }

    @Override
    public CachedRowSetImpl getlista_correos_alumnos_por_promocion(String promocion) {
        try {
            v.crs = (CachedRowSetImpl) ejec.rellena2("select u_correo from usuario usu where usu.U_EXTRAP='" + promocion + "'");
        } catch (Exception ex) {
            Logger.getLogger(neg_alumno.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs;
    }

    @Override
    public CachedRowSetImpl getdevolver_usuario(String cedula) {
        try {
            v.crs3 = (CachedRowSetImpl) ejec.rellena2("select * from usuario usu where usu.u_nick='" + cedula + "'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs3;
    }

    @Override
    public CachedRowSetImpl getLista_nombres_completos() {
        try {
            v.crs3 = (CachedRowSetImpl) ejec.rellena2("select (u_nombre ||' '|| u_apellido) as u_nombre,u_nick from usuario where u_estado='Activo'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs3;
    }

    @Override
    public void modificar(String cedula, String nombre, String apellido, String correo, String extra) {
        entidad.setPe_nombres(nombre);
        entidad.setPe_apellidos(apellido);
        entidad.setPe_email(correo);
        entidad.setU_extra(extra);
        entidad.setU_nick(cedula);
        String sql = "update Usuario set u_nombre='" + entidad.getPe_nombres() + "',u_apellido='" + entidad.getPe_apellidos() + "',u_correo='" + entidad.getPe_email() + "',u_extraP='" + entidad.getU_extra() + "' where u_nick='" + entidad.getU_nick() + "'  ";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void actualizarP(String cedula, String nombre, String apellido, String correo) {
        entidad.setPe_nombres(nombre);
        entidad.setPe_apellidos(apellido);
        entidad.setPe_email(correo);
        entidad.setU_nick(cedula);
        String sql = "update Usuario set u_nombre='" + entidad.getPe_nombres() + "',u_apellido='" + entidad.getPe_apellidos() + "',u_correo='" + entidad.getPe_email() + "' where u_nick='" + entidad.getU_nick() + "'  ";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void formatear_clave(String cedula, String preg, String clave) {
        entidad.setU_nick(cedula);
        entidad.setClave_generada(clave);
        entidad.setU_pregunta(preg);
        String sql = "update Usuario set u_password='" + entidad.getClave_generada() + "' where u_nick='" + entidad.getU_nick() + "' and  u_pregunta='" + entidad.getU_pregunta() + "'";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl devolver_datos_formatear_clave(String cedula, String preg) {
        try {
            v.crs3 = (CachedRowSetImpl) ejec.rellena2("select u_nick,u_pregunta from usuario where u_nick='" + cedula + "' and u_pregunta='" + preg + "'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs3;
    }

    @Override
    public CachedRowSetImpl buscar_us(String nick) {
        try {
            v.crs5 = (CachedRowSetImpl) ejec.rellena2("select tu_codigo,u_extrap,u_nombre,u_apellido,u_password,u_correo from usuario where u_nick='" + nick + "'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs5;
    }

    @Override
    public CachedRowSetImpl getListadministradores() {
        try {
            v.crs6 = (CachedRowSetImpl) ejec.rellena2("select u.U_NOMBRE,u.U_NICK,tipo.TU_NOMBRE,tipo.TU_CODIGO,u.U_PASSWORD,u.U_CORREO,u.U_APELLIDO,u.U_EXTRAP from USUARIO u,TIPO_USUARIO tipo where u.TU_CODIGO=tipo.TU_CODIGO and dep_codigo!=null order by tipo.TU_NOMBRE asc");
        } catch (Exception ex) {
//            Logger.getLogger(neg_usuario.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error al recuperar lista de datos");
        }
        return v.crs6;
    }
    
@Override
    public void actualizar_usuario(String nombre, String apellido, String nick, String password, String correo) {
       entidad.setPe_nombres(nombre);
        entidad.setPe_apellidos(apellido);
        entidad.setU_nick(nick);
        entidad.setU_password(password);
        entidad.setPe_email(correo);
        String sql = "update Usuario set u_nick='" + entidad.getU_nick() + "',u_nombre='" + entidad.getPe_nombres() + "',u_apellido='" + entidad.getPe_apellidos() + "',u_password='" + entidad.getU_password() + "',u_correo='" + entidad.getPe_email() + "' where u_nick='" + entidad.getU_nick() + "'  ";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen(); 
    }

public void reseteo_clave(String cédula, String clave) {
        entidad.setPe_cedula(cédula);
        entidad.setPe_passw(clave);
        String sql = "update Usuario set u_password='" + entidad.getPe_passw() + "' where u_nick='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }



public CachedRowSetImpl getdevolver_usuario_reseteo(String cedula) {
    try {
            v.crs3 = (CachedRowSetImpl) ejec.rellena2("select (usu.U_APELLIDO|| ' '||usu.U_NOMBRE) as nombres,usu.U_CORREO,usu.U_ESTADO from usuario usu where usu.u_nick='"+ cedula +"'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs3; }
}
